#ifndef _GPIO_PINDEF_H_
#define _GPIO_PINDEF_H_

/*********************************GPIO_Pin_0**********************************************/

/*********PA0******************************************************************************/
#define PA0_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOA,GPIO_PinSource0,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PA0_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOA,GPIO_PinSource0,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PA0_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOA,GPIO_PinSource0,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PA0_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOA,GPIO_PinSource0,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PA0_DAT				  		    GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)

#define PA0_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOA,GPIO_PinSource0,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PA0_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOA,GPIO_PinSource0,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PA0_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOA,GPIO_PinSource0,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PA0_OUT_SET(n)					GPIO_WriteBit(GPIOA,GPIO_Pin_0,n)

#define PA0_CFG_ADC_22				    GPIO_PinAFConfig(GPIOA,GPIO_PinSource0,GPIO_AF_6);
#define PA0_CFG_UART0_RX                GPIO_PinAFConfig(GPIOA,GPIO_PinSource0,GPIO_AF_5);
#define PA0_CFG_TIM1_CH1                GPIO_PinAFConfig(GPIOA,GPIO_PinSource0,GPIO_AF_4);
#define PA0_CFG_SWD                     GPIO_PinAFConfig(GPIOA,GPIO_PinSource0,GPIO_AF_3);
/*******************************************************************************************/
/*********PA1******************************************************************************/
#define PA1_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOA,GPIO_PinSource1,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PA1_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOA,GPIO_PinSource1,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PA1_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOA,GPIO_PinSource1,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PA1_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOA,GPIO_PinSource1,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PA1_DAT				  		    GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)

#define PA1_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOA,GPIO_PinSource1,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PA1_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOA,GPIO_PinSource1,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PA1_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOA,GPIO_PinSource1,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PA1_OUT_SET(n)					GPIO_WriteBit(GPIOA,GPIO_Pin_1,n)

#define PA1_CFG_ADC_23				    GPIO_PinAFConfig(GPIOA,GPIO_PinSource1,GPIO_AF_6);
#define PA1_CFG_UART0_TX                GPIO_PinAFConfig(GPIOA,GPIO_PinSource1,GPIO_AF_5);
#define PA1_CFG_TIM1_CH2                GPIO_PinAFConfig(GPIOA,GPIO_PinSource1,GPIO_AF_4);
#define PA1_CFG_TCK                     GPIO_PinAFConfig(GPIOA,GPIO_PinSource1,GPIO_AF_3);

/*******************************************************************************************/
/*********PA2******************************************************************************/
#define PA2_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOA,GPIO_PinSource2,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PA2_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOA,GPIO_PinSource2,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PA2_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOA,GPIO_PinSource2,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PA2_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOA,GPIO_PinSource2,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PA2_DAT				  		    GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_2)

#define PA2_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOA,GPIO_PinSource2,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PA2_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOA,GPIO_PinSource2,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PA2_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOA,GPIO_PinSource2,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PA2_OUT_SET(n)					GPIO_WriteBit(GPIOA,GPIO_Pin_2,n)

#define PA2_CFG_ADC_24				    GPIO_PinAFConfig(GPIOA,GPIO_PinSource2,GPIO_AF_6);
#define PA2_CFG_XTAL_O                  GPIO_PinAFConfig(GPIOA,GPIO_PinSource2,GPIO_AF_5);
#define PA2_CFG_TIM1_CH3                GPIO_PinAFConfig(GPIOA,GPIO_PinSource2,GPIO_AF_4);


/*******************************************************************************************/
/*********PA3******************************************************************************/
#define PA3_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOA,GPIO_PinSource3,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PA3_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOA,GPIO_PinSource3,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PA3_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOA,GPIO_PinSource3,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PA3_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOA,GPIO_PinSource3,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PA3_DAT				  		    GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_3)

#define PA3_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOA,GPIO_PinSource3,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PA3_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOA,GPIO_PinSource3,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PA3_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOA,GPIO_PinSource3,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PA3_OUT_SET(n)					GPIO_WriteBit(GPIOA,GPIO_Pin_3,n)

#define PA3_CFG_ADC_25				    GPIO_PinAFConfig(GPIOA,GPIO_PinSource3,GPIO_AF_6);
#define PA3_CFG_XTAL_I                  GPIO_PinAFConfig(GPIOA,GPIO_PinSource3,GPIO_AF_5);
#define PA3_CFG_TIM1_CH4                GPIO_PinAFConfig(GPIOA,GPIO_PinSource3,GPIO_AF_4);

/*******************************************************************************************/
/*********PA4******************************************************************************/
#define PA4_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOA,GPIO_PinSource4,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PA4_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOA,GPIO_PinSource4,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PA4_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOA,GPIO_PinSource4,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PA4_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOA,GPIO_PinSource4,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PA4_DAT				  		    GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_4)

#define PA4_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOA,GPIO_PinSource4,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PA4_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOA,GPIO_PinSource4,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PA4_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOA,GPIO_PinSource4,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PA4_OUT_SET(n)					GPIO_WriteBit(GPIOA,GPIO_Pin_4,n)

#define PA4_CFG_ADC_26				    GPIO_PinAFConfig(GPIOA,GPIO_PinSource4,GPIO_AF_6);
#define PA4_CFG_RESET                   GPIO_PinAFConfig(GPIOA,GPIO_PinSource4,GPIO_AF_5);

/*******************************************************************************************/
/*********PA5******************************************************************************/
#define PA5_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOA,GPIO_PinSource5,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PA5_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOA,GPIO_PinSource5,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PA5_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOA,GPIO_PinSource5,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PA5_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOA,GPIO_PinSource5,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PA5_DAT				  		    GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_5)

#define PA5_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOA,GPIO_PinSource5,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PA5_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOA,GPIO_PinSource5,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PA5_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOA,GPIO_PinSource5,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PA5_OUT_SET(n)					GPIO_WriteBit(GPIOA,GPIO_Pin_5,n)

#define PA5_CFG_ADC_VREF				GPIO_PinAFConfig(GPIOA,GPIO_PinSource5,GPIO_AF_7);
#define PA5_CFG_ADC_27				    GPIO_PinAFConfig(GPIOA,GPIO_PinSource5,GPIO_AF_6);
#define PA5_CFG_MCO                     GPIO_PinAFConfig(GPIOA,GPIO_PinSource5,GPIO_AF_5);
#define PA5_CFG_TIM1_CH3                GPIO_PinAFConfig(GPIOA,GPIO_PinSource5,GPIO_AF_4);
#define PA5_CFG_TK0                     GPIO_PinAFConfig(GPIOA,GPIO_PinSource5,GPIO_AF_3);

/*******************************************************************************************/
/*********PA6******************************************************************************/
#define PA6_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOA,GPIO_PinSource6,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PA6_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOA,GPIO_PinSource6,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PA6_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOA,GPIO_PinSource6,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PA6_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOA,GPIO_PinSource6,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PA6_DAT				  		    GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_6)

#define PA6_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOA,GPIO_PinSource6,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PA6_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOA,GPIO_PinSource6,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PA6_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOA,GPIO_PinSource6,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PA6_OUT_SET(n)					GPIO_WriteBit(GPIOA,GPIO_Pin_6,n)

#define PA6_CFG_ADC_0				    GPIO_PinAFConfig(GPIOA,GPIO_PinSource6,GPIO_AF_6);

#define PA6_CFG_TIM1_CH4                GPIO_PinAFConfig(GPIOA,GPIO_PinSource6,GPIO_AF_4);
#define PA6_CFG_TK_CAP                  GPIO_PinAFConfig(GPIOA,GPIO_PinSource6,GPIO_AF_3);

/*******************************************************************************************/
/*********PA7******************************************************************************/
#define PA7_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOA,GPIO_PinSource7,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PA7_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOA,GPIO_PinSource7,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PA7_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOA,GPIO_PinSource7,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PA7_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOA,GPIO_PinSource7,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PA7_DAT				  		    GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_7)

#define PA7_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOA,GPIO_PinSource7,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PA7_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOA,GPIO_PinSource7,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PA7_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOA,GPIO_PinSource7,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PA7_OUT_SET(n)					GPIO_WriteBit(GPIOA,GPIO_Pin_7,n)

#define PA7_CFG_ADC_1				    GPIO_PinAFConfig(GPIOA,GPIO_PinSource7,GPIO_AF_6);
#define PA7_CFG_PWM                     GPIO_PinAFConfig(GPIOA,GPIO_PinSource7,GPIO_AF_5);
#define PA7_CFG_TIM1_CH1                GPIO_PinAFConfig(GPIOA,GPIO_PinSource7,GPIO_AF_4);
#define PA7_CFG_TK1                     GPIO_PinAFConfig(GPIOA,GPIO_PinSource7,GPIO_AF_3);

/*******************************************************************************************/
/*********PA8******************************************************************************/
#define PA8_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOA,GPIO_PinSource8,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PA8_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOA,GPIO_PinSource8,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PA8_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOA,GPIO_PinSource8,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PA8_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOA,GPIO_PinSource8,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PA8_DAT				  		    GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_8)

#define PA8_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOA,GPIO_PinSource8,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PA8_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOA,GPIO_PinSource8,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PA8_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOA,GPIO_PinSource8,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PA8_OUT_SET(n)					GPIO_WriteBit(GPIOA,GPIO_Pin_8,n)

#define PA8_CFG_ADC_2				    GPIO_PinAFConfig(GPIOA,GPIO_PinSource8,GPIO_AF_6);

#define PA8_CFG_TIM1_CH2                GPIO_PinAFConfig(GPIOA,GPIO_PinSource8,GPIO_AF_4);
#define PA8_CFG_TK2                     GPIO_PinAFConfig(GPIOA,GPIO_PinSource8,GPIO_AF_3);

/*******************************************************************************************/
/*********PA9******************************************************************************/
#define PA9_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOA,GPIO_PinSource9,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PA9_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOA,GPIO_PinSource9,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PA9_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOA,GPIO_PinSource9,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PA9_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOA,GPIO_PinSource9,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PA9_DAT				  		    GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_9)

#define PA9_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOA,GPIO_PinSource9,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PA9_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOA,GPIO_PinSource9,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PA9_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOA,GPIO_PinSource9,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PA9_OUT_SET(n)					GPIO_WriteBit(GPIOA,GPIO_Pin_9,n)

#define PA9_CFG_ADC_3				    GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_6);

#define PA9_CFG_TIM1_CH2_N              GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_4);
#define PA9_CFG_TK3                     GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_3);

/*******************************************************************************************/
/*********PA10******************************************************************************/
#define PA10_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOA,GPIO_PinSource10,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PA10_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOA,GPIO_PinSource10,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PA10_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOA,GPIO_PinSource10,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PA10_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOA,GPIO_PinSource10,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PA10_DAT				  		GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_10)

#define PA10_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOA,GPIO_PinSource10,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PA10_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOA,GPIO_PinSource10,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PA10_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOA,GPIO_PinSource10,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PA10_OUT_SET(n)					GPIO_WriteBit(GPIOA,GPIO_Pin_10,n)

#define PA10_CFG_ADC_4				    GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_6);
#define PA10_CFG_PWM                    GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_5);
#define PA10_CFG_TIM1_CH3               GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_4);
#define PA10_CFG_TK4                    GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_3);

/*******************************************************************************************/
/*********PA11******************************************************************************/
#define PA11_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOA,GPIO_PinSource11,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PA11_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOA,GPIO_PinSource11,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PA11_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOA,GPIO_PinSource11,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PA11_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOA,GPIO_PinSource11,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PA11_DAT				  		GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_11)

#define PA11_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOA,GPIO_PinSource11,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PA11_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOA,GPIO_PinSource11,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PA11_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOA,GPIO_PinSource11,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PA11_OUT_SET(n)					GPIO_WriteBit(GPIOA,GPIO_Pin_11,n)

#define PA11_CFG_ADC_5				    GPIO_PinAFConfig(GPIOA,GPIO_PinSource11,GPIO_AF_6);

#define PA11_CFG_TIM1_CH3_N             GPIO_PinAFConfig(GPIOA,GPIO_PinSource11,GPIO_AF_4);
#define PA11_CFG_TK5                    GPIO_PinAFConfig(GPIOA,GPIO_PinSource11,GPIO_AF_3);

/*******************************************************************************************/
/*********PA12******************************************************************************/
#define PA12_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOA,GPIO_PinSource12,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PA12_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOA,GPIO_PinSource12,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PA12_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOA,GPIO_PinSource12,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PA12_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOA,GPIO_PinSource12,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PA12_DAT				  		GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_12)

#define PA12_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOA,GPIO_PinSource12,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PA12_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOA,GPIO_PinSource12,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PA12_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOA,GPIO_PinSource12,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PA12_OUT_SET(n)					GPIO_WriteBit(GPIOA,GPIO_Pin_12,n)

#define PA12_CFG_ADC_6				    GPIO_PinAFConfig(GPIOA,GPIO_PinSource12,GPIO_AF_6);

#define PA12_CFG_TIM1_CH4               GPIO_PinAFConfig(GPIOA,GPIO_PinSource12,GPIO_AF_4);
#define PA12_CFG_TK6                    GPIO_PinAFConfig(GPIOA,GPIO_PinSource12,GPIO_AF_3);

/*******************************************************************************************/
/*********PA13******************************************************************************/
#define PA13_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOA,GPIO_PinSource13,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PA13_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOA,GPIO_PinSource13,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PA13_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOA,GPIO_PinSource13,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PA13_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOA,GPIO_PinSource13,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PA13_DAT				  		GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_13)

#define PA13_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOA,GPIO_PinSource13,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PA13_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOA,GPIO_PinSource13,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PA13_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOA,GPIO_PinSource13,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PA13_OUT_SET(n)					GPIO_WriteBit(GPIOA,GPIO_Pin_13,n)

#define PA13_CFG_ADC_7				    GPIO_PinAFConfig(GPIOA,GPIO_PinSource13,GPIO_AF_6);

#define PA13_CFG_TIM1_CH4_N             GPIO_PinAFConfig(GPIOA,GPIO_PinSource13,GPIO_AF_4);
#define PA13_CFG_TK7                    GPIO_PinAFConfig(GPIOA,GPIO_PinSource13,GPIO_AF_3);

/*******************************************************************************************/
/*********PA14******************************************************************************/
#define PA14_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOA,GPIO_PinSource14,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PA14_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOA,GPIO_PinSource14,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PA14_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOA,GPIO_PinSource14,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PA14_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOA,GPIO_PinSource14,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PA14_DAT				  		GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_14)

#define PA14_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOA,GPIO_PinSource14,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PA14_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOA,GPIO_PinSource14,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PA14_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOA,GPIO_PinSource14,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PA14_OUT_SET(n)					GPIO_WriteBit(GPIOA,GPIO_Pin_14,n)

#define PA14_CFG_ADC_8				    GPIO_PinAFConfig(GPIOA,GPIO_PinSource14,GPIO_AF_6);
#define PA14_CFG_UART1_TX               GPIO_PinAFConfig(GPIOA,GPIO_PinSource14,GPIO_AF_5);
#define PA14_CFG_TIM14_CH1              GPIO_PinAFConfig(GPIOA,GPIO_PinSource14,GPIO_AF_4);
#define PA14_CFG_TK8                    GPIO_PinAFConfig(GPIOA,GPIO_PinSource14,GPIO_AF_3);

/*******************************************************************************************/
/*********PA15******************************************************************************/
#define PA15_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOA,GPIO_PinSource15,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PA15_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOA,GPIO_PinSource15,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PA15_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOA,GPIO_PinSource15,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PA15_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOA,GPIO_PinSource15,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PA15_DAT				  		GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_15)

#define PA15_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOA,GPIO_PinSource15,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PA15_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOA,GPIO_PinSource15,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PA15_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOA,GPIO_PinSource15,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PA15_OUT_SET(n)					GPIO_WriteBit(GPIOA,GPIO_Pin_15,n)

#define PA15_CFG_ADC_9				    GPIO_PinAFConfig(GPIOA,GPIO_PinSource15,GPIO_AF_6);
#define PA15_CFG_UART1_RX               GPIO_PinAFConfig(GPIOA,GPIO_PinSource15,GPIO_AF_5);
#define PA15_CFG_TIM14_CH2              GPIO_PinAFConfig(GPIOA,GPIO_PinSource15,GPIO_AF_4);
#define PA15_CFG_TK9                    GPIO_PinAFConfig(GPIOA,GPIO_PinSource15,GPIO_AF_3);

/*******************************************************************************************/
/*********PA16******************************************************************************/
#define PA16_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOA,GPIO_PinSource16,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PA16_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOA,GPIO_PinSource16,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PA16_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOA,GPIO_PinSource16,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PA16_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOA,GPIO_PinSource16,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PA16_DAT				  		GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_16)

#define PA16_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOA,GPIO_PinSource16,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PA16_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOA,GPIO_PinSource16,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PA16_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOA,GPIO_PinSource16,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PA16_OUT_SET(n)					GPIO_WriteBit(GPIOA,GPIO_Pin_16,n)

#define PA16_CFG_ADC_10				    GPIO_PinAFConfig(GPIOA,GPIO_PinSource16,GPIO_AF_6);
#define PA16_CFG_PWM                    GPIO_PinAFConfig(GPIOA,GPIO_PinSource16,GPIO_AF_5);
#define PA16_CFG_TIM1_CH2               GPIO_PinAFConfig(GPIOA,GPIO_PinSource16,GPIO_AF_4);
#define PA16_CFG_TK10                    GPIO_PinAFConfig(GPIOA,GPIO_PinSource16,GPIO_AF_3);

/*******************************************************************************************/
/*********PA17******************************************************************************/
#define PA17_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOA,GPIO_PinSource17,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PA17_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOA,GPIO_PinSource17,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PA17_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOA,GPIO_PinSource17,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PA17_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOA,GPIO_PinSource17,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PA17_DAT				  		GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_17)

#define PA17_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOA,GPIO_PinSource17,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PA17_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOA,GPIO_PinSource17,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PA17_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOA,GPIO_PinSource17,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PA17_OUT_SET(n)					GPIO_WriteBit(GPIOA,GPIO_Pin_17,n)

#define PA17_CFG_ADC_11				    GPIO_PinAFConfig(GPIOA,GPIO_PinSource17,GPIO_AF_6);
#define PA17_CFG_UART2_RX               GPIO_PinAFConfig(GPIOA,GPIO_PinSource17,GPIO_AF_5);
#define PA17_CFG_TIM1_CH3               GPIO_PinAFConfig(GPIOA,GPIO_PinSource17,GPIO_AF_4);
#define PA17_CFG_TK11                   GPIO_PinAFConfig(GPIOA,GPIO_PinSource17,GPIO_AF_3);

/*******************************************************************************************/
/*********PA18******************************************************************************/
#define PA18_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOA,GPIO_PinSource18,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PA18_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOA,GPIO_PinSource18,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PA18_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOA,GPIO_PinSource18,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PA18_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOA,GPIO_PinSource18,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PA18_DAT				  		GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_18)

#define PA18_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOA,GPIO_PinSource18,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PA18_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOA,GPIO_PinSource18,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PA18_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOA,GPIO_PinSource18,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PA18_OUT_SET(n)					GPIO_WriteBit(GPIOA,GPIO_Pin_18,n)

#define PA18_CFG_ADC_12				    GPIO_PinAFConfig(GPIOA,GPIO_PinSource18,GPIO_AF_6);
#define PA18_CFG_UART2_TX               GPIO_PinAFConfig(GPIOA,GPIO_PinSource18,GPIO_AF_5);
#define PA18_CFG_TIM1_CH4               GPIO_PinAFConfig(GPIOA,GPIO_PinSource18,GPIO_AF_4);
#define PA18_CFG_MIC_4                  GPIO_PinAFConfig(GPIOA,GPIO_PinSource18,GPIO_AF_3);

/*******************************************************************************************/
/*********PA19******************************************************************************/
#define PA19_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOA,GPIO_PinSource19,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PA19_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOA,GPIO_PinSource19,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PA19_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOA,GPIO_PinSource19,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PA19_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOA,GPIO_PinSource19,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PA19_DAT				  		GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_19)

#define PA19_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOA,GPIO_PinSource19,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PA19_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOA,GPIO_PinSource19,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PA19_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOA,GPIO_PinSource19,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PA19_OUT_SET(n)					GPIO_WriteBit(GPIOA,GPIO_Pin_19,n)

#define PA19_CFG_ADC_13				    GPIO_PinAFConfig(GPIOA,GPIO_PinSource19,GPIO_AF_6);

#define PA19_CFG_TIM1_CH1               GPIO_PinAFConfig(GPIOA,GPIO_PinSource19,GPIO_AF_4);
#define PA19_CFG_MIC_3                  GPIO_PinAFConfig(GPIOA,GPIO_PinSource19,GPIO_AF_3);

/*******************************************************************************************/
/*********PA20******************************************************************************/
#define PA20_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOA,GPIO_PinSource20,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PA20_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOA,GPIO_PinSource20,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PA20_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOA,GPIO_PinSource20,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PA20_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOA,GPIO_PinSource20,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PA20_DAT				  		GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_20)

#define PA20_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOA,GPIO_PinSource20,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PA20_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOA,GPIO_PinSource20,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PA20_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOA,GPIO_PinSource20,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PA20_OUT_SET(n)					GPIO_WriteBit(GPIOA,GPIO_Pin_20,n)

#define PA20_CFG_ADC_14				    GPIO_PinAFConfig(GPIOA,GPIO_PinSource20,GPIO_AF_6);

#define PA20_CFG_TIM1_CH1_N             GPIO_PinAFConfig(GPIOA,GPIO_PinSource20,GPIO_AF_4);
#define PA20_CFG_MIC_2                  GPIO_PinAFConfig(GPIOA,GPIO_PinSource20,GPIO_AF_3);

/*******************************************************************************************/
/*********PA21******************************************************************************/
#define PA21_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOA,GPIO_PinSource21,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PA21_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOA,GPIO_PinSource21,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PA21_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOA,GPIO_PinSource21,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PA21_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOA,GPIO_PinSource21,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PA21_DAT				  		GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_21)
                                        
#define PA21_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOA,GPIO_PinSource21,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PA21_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOA,GPIO_PinSource21,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PA21_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOA,GPIO_PinSource21,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PA21_OUT_SET(n)					GPIO_WriteBit(GPIOA,GPIO_Pin_21,n)

#define PA21_CFG_ADC_15				    GPIO_PinAFConfig(GPIOA,GPIO_PinSource21,GPIO_AF_6);

#define PA21_CFG_TIM1_CH1               GPIO_PinAFConfig(GPIOA,GPIO_PinSource21,GPIO_AF_4);
#define PA21_CFG_MIC_1                  GPIO_PinAFConfig(GPIOA,GPIO_PinSource21,GPIO_AF_3);
/*******************************************************************************************/
/*********PA22******************************************************************************/
#define PA22_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOA,GPIO_PinSource22,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PA22_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOA,GPIO_PinSource22,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PA22_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOA,GPIO_PinSource22,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PA22_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOA,GPIO_PinSource22,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PA22_DAT				  		GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_22)

#define PA22_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOA,GPIO_PinSource22,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PA22_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOA,GPIO_PinSource22,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PA22_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOA,GPIO_PinSource22,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PA22_OUT_SET(n)					GPIO_WriteBit(GPIOA,GPIO_Pin_22,n)

#define PA22_CFG_ADC_16				    GPIO_PinAFConfig(GPIOA,GPIO_PinSource22,GPIO_AF_6);
#define PA22_CFG_C2P1                   GPIO_PinAFConfig(GPIOA,GPIO_PinSource22,GPIO_AF_5);
#define PA22_CFG_TIM1_CH2             	GPIO_PinAFConfig(GPIOA,GPIO_PinSource22,GPIO_AF_4);


/*******************************************************************************************/
/*********PA23******************************************************************************/
#define PA23_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOA,GPIO_PinSource23,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PA23_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOA,GPIO_PinSource23,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PA23_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOA,GPIO_PinSource23,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PA23_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOA,GPIO_PinSource23,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PA23_DAT				  		GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_23)

#define PA23_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOA,GPIO_PinSource23,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PA23_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOA,GPIO_PinSource23,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PA23_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOA,GPIO_PinSource23,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PA23_OUT_SET(n)					GPIO_WriteBit(GPIOA,GPIO_Pin_23,n)

#define PA23_CFG_ADC_17				    GPIO_PinAFConfig(GPIOA,GPIO_PinSource23,GPIO_AF_6);
#define PA23_CFG_C2P0                   GPIO_PinAFConfig(GPIOA,GPIO_PinSource23,GPIO_AF_5);
#define PA23_CFG_TIM1_CH3               GPIO_PinAFConfig(GPIOA,GPIO_PinSource23,GPIO_AF_4);

/*******************************************************************************************/
/*********PA24******************************************************************************/
#define PA24_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOA,GPIO_PinSource24,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PA24_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOA,GPIO_PinSource24,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PA24_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOA,GPIO_PinSource24,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PA24_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOA,GPIO_PinSource24,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PA24_DAT				  		GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_24)

#define PA24_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOA,GPIO_PinSource24,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PA24_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOA,GPIO_PinSource24,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PA24_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOA,GPIO_PinSource24,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PA24_OUT_SET(n)					GPIO_WriteBit(GPIOA,GPIO_Pin_24,n)

#define PA24_CFG_ADC_18				    GPIO_PinAFConfig(GPIOA,GPIO_PinSource24,GPIO_AF_6);
#define PA24_CFG_C1P1                   GPIO_PinAFConfig(GPIOA,GPIO_PinSource24,GPIO_AF_5);
#define PA24_CFG_TIM14_CH1              GPIO_PinAFConfig(GPIOA,GPIO_PinSource24,GPIO_AF_4);

/*******************************************************************************************/
/*********PA25******************************************************************************/
#define PA25_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOA,GPIO_PinSource25,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PA25_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOA,GPIO_PinSource25,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PA25_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOA,GPIO_PinSource25,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PA25_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOA,GPIO_PinSource25,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PA25_DAT				  		GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_25)

#define PA25_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOA,GPIO_PinSource25,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PA25_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOA,GPIO_PinSource25,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PA25_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOA,GPIO_PinSource25,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PA25_OUT_SET(n)					GPIO_WriteBit(GPIOA,GPIO_Pin_25,n)

#define PA25_CFG_ADC_19				    GPIO_PinAFConfig(GPIOA,GPIO_PinSource25,GPIO_AF_6);
#define PA25_CFG_C1P0                   GPIO_PinAFConfig(GPIOA,GPIO_PinSource25,GPIO_AF_5);
#define PA25_CFG_TIM14_CH2              GPIO_PinAFConfig(GPIOA,GPIO_PinSource25,GPIO_AF_4);

/*******************************************************************************************/
/*********PA26******************************************************************************/
#define PA26_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOA,GPIO_PinSource26,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PA26_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOA,GPIO_PinSource26,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PA26_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOA,GPIO_PinSource26,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PA26_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOA,GPIO_PinSource26,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PA26_DAT				  		GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_26)

#define PA26_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOA,GPIO_PinSource26,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PA26_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOA,GPIO_PinSource26,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PA26_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOA,GPIO_PinSource26,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PA26_OUT_SET(n)					GPIO_WriteBit(GPIOA,GPIO_Pin_26,n)

#define PA26_CFG_ADC_21				    GPIO_PinAFConfig(GPIOA,GPIO_PinSource26,GPIO_AF_6);
#define PA26_CFG_I2C_SCL                GPIO_PinAFConfig(GPIOA,GPIO_PinSource26,GPIO_AF_5);
#define PA26_CFG_TIM14_CH1              GPIO_PinAFConfig(GPIOA,GPIO_PinSource26,GPIO_AF_4);

/*******************************************************************************************/
/*********PA27******************************************************************************/
#define PA27_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOA,GPIO_PinSource27,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PA27_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOA,GPIO_PinSource27,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PA27_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOA,GPIO_PinSource27,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PA27_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOA,GPIO_PinSource27,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PA27_DAT				  		GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_27)

#define PA27_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOA,GPIO_PinSource27,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PA27_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOA,GPIO_PinSource27,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PA27_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOA,GPIO_PinSource27,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PA27_OUT_SET(n)					GPIO_WriteBit(GPIOA,GPIO_Pin_27,n)

#define PA27_CFG_ADC_20				    GPIO_PinAFConfig(GPIOA,GPIO_PinSource27,GPIO_AF_6);
#define PA27_CFG_I2C_SDA                GPIO_PinAFConfig(GPIOA,GPIO_PinSource27,GPIO_AF_5);
#define PA27_CFG_TIM14_CH2              GPIO_PinAFConfig(GPIOA,GPIO_PinSource27,GPIO_AF_4);

/*******************************************************************************************/
/*********PA28******************************************************************************/
#define PA28_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOA,GPIO_PinSource28,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PA28_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOA,GPIO_PinSource28,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PA28_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOA,GPIO_PinSource28,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PA28_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOA,GPIO_PinSource28,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PA28_DAT				  		GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_28)

#define PA28_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOA,GPIO_PinSource28,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PA28_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOA,GPIO_PinSource28,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PA28_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOA,GPIO_PinSource28,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PA28_OUT_SET(n)					GPIO_WriteBit(GPIOA,GPIO_Pin_28,n)


#define PA28_CFG_SPI2_MISO              GPIO_PinAFConfig(GPIOA,GPIO_PinSource28,GPIO_AF_4);
#define PA28_CFG_SPI2_NSS               GPIO_PinAFConfig(GPIOA,GPIO_PinSource28,GPIO_AF_3);

/*******************************************************************************************/
/*********PA29******************************************************************************/
#define PA29_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOA,GPIO_PinSource29,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PA29_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOA,GPIO_PinSource29,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PA29_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOA,GPIO_PinSource29,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PA29_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOA,GPIO_PinSource29,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PA29_DAT				  		GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_29)

#define PA29_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOA,GPIO_PinSource29,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PA29_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOA,GPIO_PinSource29,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PA29_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOA,GPIO_PinSource29,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PA29_OUT_SET(n)					GPIO_WriteBit(GPIOA,GPIO_Pin_29,n)


#define PA29_CFG_SPI2_NSS               GPIO_PinAFConfig(GPIOA,GPIO_PinSource29,GPIO_AF_4);
#define PA29_CFG_SPI2_MOSI              GPIO_PinAFConfig(GPIOA,GPIO_PinSource29,GPIO_AF_3);

/*******************************************************************************************/
/*********PA30******************************************************************************/
#define PA30_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOA,GPIO_PinSource30,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PA30_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOA,GPIO_PinSource30,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PA30_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOA,GPIO_PinSource30,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PA30_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOA,GPIO_PinSource30,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PA30_DAT				  		GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_30)

#define PA30_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOA,GPIO_PinSource30,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PA30_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOA,GPIO_PinSource30,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PA30_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOA,GPIO_PinSource30,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PA30_OUT_SET(n)					GPIO_WriteBit(GPIOA,GPIO_Pin_30,n)


#define PA30_CFG_SPI2_CLK               GPIO_PinAFConfig(GPIOA,GPIO_PinSource30,GPIO_AF_4);
#define PA30_CFG_SPI2_MISO              GPIO_PinAFConfig(GPIOA,GPIO_PinSource30,GPIO_AF_3);

/*******************************************************************************************/
/*********PA31******************************************************************************/
#define PA31_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOA,GPIO_PinSource31,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PA31_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOA,GPIO_PinSource31,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PA31_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOA,GPIO_PinSource31,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PA31_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOA,GPIO_PinSource31,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PA31_DAT				  		GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_31)

#define PA31_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOA,GPIO_PinSource31,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PA31_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOA,GPIO_PinSource31,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PA31_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOA,GPIO_PinSource31,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PA31_OUT_SET(n)					GPIO_WriteBit(GPIOA,GPIO_Pin_31,n)


#define PA31_CFG_SPI2_SPI2_MOSI         GPIO_PinAFConfig(GPIOA,GPIO_PinSource31,GPIO_AF_4);
#define PA31_CFG_SPI2_CLK               GPIO_PinAFConfig(GPIOA,GPIO_PinSource31,GPIO_AF_3);

/*******************************************************************************************/
/*********PB0******************************************************************************/
#define PB0_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOB,GPIO_PinSource0,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PB0_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOB,GPIO_PinSource0,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PB0_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOB,GPIO_PinSource0,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PB0_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOB,GPIO_PinSource0,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PB0_DAT				  		    GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0)

#define PB0_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOB,GPIO_PinSource0,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PB0_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOB,GPIO_PinSource0,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PB0_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOB,GPIO_PinSource0,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PB0_OUT_SET(n)					GPIO_WriteBit(GPIOB,GPIO_Pin_0,n)


#define PB0_CFG_SPI2_MISO                GPIO_PinAFConfig(GPIOB,GPIO_PinSource0,GPIO_AF_4);
#define PB0_CFG_SPI2_MOSI                GPIO_PinAFConfig(GPIOB,GPIO_PinSource0,GPIO_AF_3);
/*******************************************************************************************/
/*********PA1******************************************************************************/
#define PB1_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOB,GPIO_PinSource1,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PB1_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOB,GPIO_PinSource1,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PB1_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOB,GPIO_PinSource1,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PB1_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOB,GPIO_PinSource1,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PB1_DAT				  		    GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1)

#define PB1_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOB,GPIO_PinSource1,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PB1_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOB,GPIO_PinSource1,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PB1_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOB,GPIO_PinSource1,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PB1_OUT_SET(n)					GPIO_WriteBit(GPIOB,GPIO_Pin_1,n)

#define PB1_CFG_SPI2_CLK                GPIO_PinAFConfig(GPIOB,GPIO_PinSource1,GPIO_AF_4);
#define PB1_CFG_SPI2_NSS                GPIO_PinAFConfig(GPIOB,GPIO_PinSource1,GPIO_AF_3);

/*******************************************************************************************/
/*********PB2******************************************************************************/
#define PB2_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOB,GPIO_PinSource2,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PB2_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOB,GPIO_PinSource2,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PB2_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOB,GPIO_PinSource2,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PB2_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOB,GPIO_PinSource2,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PB2_DAT				  		    GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_2)

#define PB2_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOB,GPIO_PinSource2,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PB2_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOB,GPIO_PinSource2,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PB2_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOB,GPIO_PinSource2,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PB2_OUT_SET(n)					GPIO_WriteBit(GPIOB,GPIO_Pin_2,n)


#define PB2_CFG_SPI2_NSS                GPIO_PinAFConfig(GPIOB,GPIO_PinSource2,GPIO_AF_4);
#define PB2_CFG_SPI2_MISO               GPIO_PinAFConfig(GPIOB,GPIO_PinSource2,GPIO_AF_3);


/*******************************************************************************************/
/*********PB3******************************************************************************/
#define PB3_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOB,GPIO_PinSource3,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PB3_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOB,GPIO_PinSource3,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PB3_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOB,GPIO_PinSource3,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PB3_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOB,GPIO_PinSource3,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PB3_DAT				  		    GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_3)

#define PB3_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOB,GPIO_PinSource3,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PB3_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOB,GPIO_PinSource3,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PB3_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOB,GPIO_PinSource3,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PB3_OUT_SET(n)					GPIO_WriteBit(GPIOB,GPIO_Pin_3,n)

#define PB3_CFG_FLS_SPI_D0				GPIO_PinAFConfig(GPIOB,GPIO_PinSource3,GPIO_AF_6);
#define PB3_CFG_FLS_SPI_D3              GPIO_PinAFConfig(GPIOB,GPIO_PinSource3,GPIO_AF_5);
#define PB3_CFG_SPI1_MOSI            	GPIO_PinAFConfig(GPIOB,GPIO_PinSource3,GPIO_AF_4);
#define PB3_CFG_SPI1_D3                 GPIO_PinAFConfig(GPIOB,GPIO_PinSource3,GPIO_AF_3);

/*******************************************************************************************/
/*********PB4******************************************************************************/
#define PB4_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOB,GPIO_PinSource4,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PB4_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOB,GPIO_PinSource4,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PB4_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOB,GPIO_PinSource4,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PB4_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOB,GPIO_PinSource4,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PB4_DAT				  		    GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_4)

#define PB4_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOB,GPIO_PinSource4,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PB4_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOB,GPIO_PinSource4,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PB4_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOB,GPIO_PinSource4,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PB4_OUT_SET(n)					GPIO_WriteBit(GPIOB,GPIO_Pin_4,n)

#define PB4_CFG_FLS_SPI_D2				GPIO_PinAFConfig(GPIOB,GPIO_PinSource4,GPIO_AF_6);
#define PB4_CFG_FLS_SPI_CLK             GPIO_PinAFConfig(GPIOB,GPIO_PinSource4,GPIO_AF_5);
#define PB4_CFG_FLS_SPI1_D2				GPIO_PinAFConfig(GPIOB,GPIO_PinSource4,GPIO_AF_4);
#define PB4_CFG_SPI1_SCK                GPIO_PinAFConfig(GPIOB,GPIO_PinSource4,GPIO_AF_3);
/*******************************************************************************************/
/*********PB5******************************************************************************/
#define PB5_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOB,GPIO_PinSource5,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PB5_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOB,GPIO_PinSource5,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PB5_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOB,GPIO_PinSource5,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PB5_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOB,GPIO_PinSource5,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PB5_DAT				  		    GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5)

#define PB5_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOB,GPIO_PinSource5,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PB5_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOB,GPIO_PinSource5,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PB5_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOB,GPIO_PinSource5,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PB5_OUT_SET(n)					GPIO_WriteBit(GPIOB,GPIO_Pin_5,n)

#define PB5_CFG_FLS_SPI_D3				GPIO_PinAFConfig(GPIOB,GPIO_PinSource5,GPIO_AF_6);
#define PB5_CFG_FLS_SPI_D0              GPIO_PinAFConfig(GPIOB,GPIO_PinSource5,GPIO_AF_5);
#define PB5_CFG_SPI1_D3                 GPIO_PinAFConfig(GPIOB,GPIO_PinSource5,GPIO_AF_4);
#define PB5_CFG_SPI1_D0                 GPIO_PinAFConfig(GPIOB,GPIO_PinSource5,GPIO_AF_3);

/*******************************************************************************************/
/*********PB6******************************************************************************/
#define PB6_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOB,GPIO_PinSource6,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PB6_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOB,GPIO_PinSource6,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PB6_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOB,GPIO_PinSource6,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PB6_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOB,GPIO_PinSource6,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PB6_DAT				  		    GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_6)

#define PB6_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOB,GPIO_PinSource6,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PB6_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOB,GPIO_PinSource6,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PB6_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOB,GPIO_PinSource6,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PB6_OUT_SET(n)					GPIO_WriteBit(GPIOB,GPIO_Pin_6,n)

#define PB6_CFG_FLS_SPI_D1			    GPIO_PinAFConfig(GPIOB,GPIO_PinSource6,GPIO_AF_6);
#define PB6_CFG_FLS_SPI_D2				GPIO_PinAFConfig(GPIOB,GPIO_PinSource6,GPIO_AF_5);
#define PB6_CFG_SPI1_MISO               GPIO_PinAFConfig(GPIOB,GPIO_PinSource6,GPIO_AF_4);
#define PB6_CFG_SPI1_D2                 GPIO_PinAFConfig(GPIOB,GPIO_PinSource6,GPIO_AF_3);

/*******************************************************************************************/
/*********PB7******************************************************************************/
#define PB7_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOB,GPIO_PinSource7,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PB7_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOB,GPIO_PinSource7,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PB7_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOB,GPIO_PinSource7,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PB7_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOB,GPIO_PinSource7,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PB7_DAT				  		    GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_7)

#define PB7_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOB,GPIO_PinSource7,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PB7_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOB,GPIO_PinSource7,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PB7_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOB,GPIO_PinSource7,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PB7_OUT_SET(n)					GPIO_WriteBit(GPIOB,GPIO_Pin_7,n)

#define PB7_CFG_FLS_SPI_NSS				GPIO_PinAFConfig(GPIOB,GPIO_PinSource7,GPIO_AF_6);
#define PB7_CFG_FLS_SPI_D1              GPIO_PinAFConfig(GPIOB,GPIO_PinSource7,GPIO_AF_5);
#define PB7_CFG_SPI1_NSS                GPIO_PinAFConfig(GPIOB,GPIO_PinSource7,GPIO_AF_4);
#define PB7_CFG_SPI1_MISO	            GPIO_PinAFConfig(GPIOB,GPIO_PinSource7,GPIO_AF_3);

/*******************************************************************************************/
/*********PB8******************************************************************************/
#define PB8_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOB,GPIO_PinSource8,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PB8_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOB,GPIO_PinSource8,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PB8_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOB,GPIO_PinSource8,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PB8_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOB,GPIO_PinSource8,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PB8_DAT				  		    GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_8)

#define PB8_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOB,GPIO_PinSource8,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PB8_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOB,GPIO_PinSource8,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PB8_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOB,GPIO_PinSource8,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PB8_OUT_SET(n)					GPIO_WriteBit(GPIOB,GPIO_Pin_8,n)

#define PB8_CFG_FLS_SPI_CLK				GPIO_PinAFConfig(GPIOB,GPIO_PinSource8,GPIO_AF_6);
#define PB8_CFG_FLS_SPI_NSS				GPIO_PinAFConfig(GPIOB,GPIO_PinSource8,GPIO_AF_5);
#define PB8_CFG_SPI1_CLK                GPIO_PinAFConfig(GPIOB,GPIO_PinSource8,GPIO_AF_4);
#define PB8_CFG_SPI1_SSB                GPIO_PinAFConfig(GPIOB,GPIO_PinSource8,GPIO_AF_3);

/*******************************************************************************************/
/*********PB9******************************************************************************/
#define PB9_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOB,GPIO_PinSource9,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PB9_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOB,GPIO_PinSource9,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PB9_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOB,GPIO_PinSource9,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PB9_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOB,GPIO_PinSource9,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PB9_DAT				  		    GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_9)

#define PB9_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOB,GPIO_PinSource9,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PB9_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOB,GPIO_PinSource9,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PB9_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOB,GPIO_PinSource9,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PB9_OUT_SET(n)					GPIO_WriteBit(GPIOB,GPIO_Pin_9,n)

#define PB9_CFG_SPI3_MISO				GPIO_PinAFConfig(GPIOB,GPIO_PinSource9,GPIO_AF_5);
#define PB9_CFG_SPI3_SCK                GPIO_PinAFConfig(GPIOB,GPIO_PinSource9,GPIO_AF_4);
#define PB9_CFG_SPI3_NSS                GPIO_PinAFConfig(GPIOB,GPIO_PinSource9,GPIO_AF_3);

/*******************************************************************************************/
/*********PB10******************************************************************************/
#define PB10_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOB,GPIO_PinSource10,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PB10_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOB,GPIO_PinSource10,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PB10_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOB,GPIO_PinSource10,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PB10_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOB,GPIO_PinSource10,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PB10_DAT				  		GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_10)

#define PB10_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOB,GPIO_PinSource10,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PB10_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOB,GPIO_PinSource10,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PB10_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOB,GPIO_PinSource10,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PB10_OUT_SET(n)					GPIO_WriteBit(GPIOB,GPIO_Pin_10,n)

#define PB10_CFG_SPI3_NSS               GPIO_PinAFConfig(GPIOB,GPIO_PinSource10,GPIO_AF_5);
#define PB10_CFG_SPI3_MOSI              GPIO_PinAFConfig(GPIOB,GPIO_PinSource10,GPIO_AF_4);
#define PB10_CFG_SPI3_MISO              GPIO_PinAFConfig(GPIOB,GPIO_PinSource10,GPIO_AF_3);

/*******************************************************************************************/
/*********PB11******************************************************************************/
#define PB11_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOB,GPIO_PinSource11,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PB11_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOB,GPIO_PinSource11,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PB11_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOB,GPIO_PinSource11,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PB11_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOB,GPIO_PinSource11,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PB11_DAT				  		GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11)

#define PB11_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOB,GPIO_PinSource11,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PB11_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOB,GPIO_PinSource11,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PB11_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOB,GPIO_PinSource11,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PB11_OUT_SET(n)					GPIO_WriteBit(GPIOB,GPIO_Pin_11,n)

#define PB11_CFG_SPI3_SCK				GPIO_PinAFConfig(GPIOB,GPIO_PinSource11,GPIO_AF_5);
#define PB11_CFG_SPI3_MISO              GPIO_PinAFConfig(GPIOB,GPIO_PinSource11,GPIO_AF_4);
#define PB11_CFG_SPI3_MOSI              GPIO_PinAFConfig(GPIOB,GPIO_PinSource11,GPIO_AF_3);

/*******************************************************************************************/
/*********PB12******************************************************************************/
#define PB12_CFG_HZ_NOPULL				GPIO_cfg_hz(GPIOB,GPIO_PinSource12,GPIO_Mode_HZ,GPIO_PuPd_NOPULL)
#define PB12_CFG_INPUT_NOPULL			GPIO_cfg_input(GPIOB,GPIO_PinSource12,GPIO_Mode_IN,GPIO_PuPd_NOPULL)
#define PB12_CFG_INPUT_PULL_UP			GPIO_cfg_input(GPIOB,GPIO_PinSource12,GPIO_Mode_IN,GPIO_PuPd_UP)
#define PB12_CFG_INPUT_PULL_DN			GPIO_cfg_input(GPIOB,GPIO_PinSource12,GPIO_Mode_IN,GPIO_PuPd_DN)
#define PB12_DAT				  		GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12)

#define PB12_CFG_OUTPUT_NOPULL			GPIO_cfg_output(GPIOB,GPIO_PinSource12,GPIO_Mode_OUT,GPIO_PuPd_NOPULL)
#define PB12_CFG_OUTPUT_PULL_UP		    GPIO_cfg_output(GPIOB,GPIO_PinSource12,GPIO_Mode_OUT,GPIO_PuPd_UP)
#define PB12_CFG_OUTPUT_PULL_DN		    GPIO_cfg_output(GPIOB,GPIO_PinSource12,GPIO_Mode_OUT,GPIO_PuPd_DN)
#define PB12_OUT_SET(n)					GPIO_WriteBit(GPIOB,GPIO_Pin_12,n)

#define PB12_CFG_SPI3_MOSI				GPIO_PinAFConfig(GPIOB,GPIO_PinSource12,GPIO_AF_5);
#define PB12_CFG_SPI3_NSS               GPIO_PinAFConfig(GPIOB,GPIO_PinSource12,GPIO_AF_4);
#define PB12_CFG_SPI3_SCK               GPIO_PinAFConfig(GPIOB,GPIO_PinSource12,GPIO_AF_3);

/*******************************************************************************************/

/*******************************************************************************************/
#endif

